package com.jade.bss.ec.ware;

import java.util.List;

import com.jade.framework.base.criterion.Criteria;
import com.jade.framework.base.util.PagingList;

/**
 * 商品属性数据访问接口
 */
public interface WareAttrDao
{
    /**
     * 新增属性组。
     *
     * @param group 属性组
     * @throws WareException 处理异常
     */
    public void addGroup(WareAttrGroup group)
            throws WareException;

    /**
     * 更新属性组信息。
     *
     * @param group 属性组
     * @throws WareException 处理异常
     */
    public void updateGroup(WareAttrGroup group)
            throws WareException;

    /**
     * 删除属性组。
     *
     * @param group 属性组
     * @throws WareException 处理异常
     */
    public void removeGroup(WareAttrGroup group)
            throws WareException;

    /**
     * 获取属性组信息。
     *
     * @param id 属性组标识
     * @return 属性组
     * @throws WareException 处理异常
     */
    public WareAttrGroup getGroup(long id)
            throws WareException;

    /**
     * 根据条件查找属性组。
     *
     * @param criteria 检索条件
     * @return 属性组列表
     */
    public List<WareAttrGroup> listGroup(Criteria criteria);

    /**
     * 根据条件分页查找属性组。
     *
     * @param criteria 检索条件
     * @return 属性组列表
     */
    public PagingList<WareAttrGroup> queryGroup(Criteria criteria);

    /**
     * 新增属性。
     *
     * @param attribute 属性
     * @throws WareException 处理异常
     */
    public void addAttr(WareAttribute attribute)
            throws WareException;

    /**
     * 编辑属性。
     *
     * @param attribute 属性
     * @throws WareException 处理异常
     */
    public void updateAttr(WareAttribute attribute)
            throws WareException;

    /**
     * 删除属性。
     *
     * @param attribute 属性
     * @throws WareException 处理异常
     */
    public void removeAttr(WareAttribute attribute)
            throws WareException;

    /**
     * 获取属性信息。
     *
     * @param id 属性
     * @return  属性信息
     */
    public WareAttribute getAttr(long id)
            throws WareException;

    /**
     * 根据条件查找所有属性。
     *
     * @param criteria 检索条件
     * @return 属性列表
     */
    public List<WareAttribute> listAttr(Criteria criteria);

    /**
     * 根据条件分页查找属性。
     *
     * @param criteria 检索条件
     * @return 属性列表
     */
    public PagingList<WareAttribute> queryAttr(Criteria criteria);
}
